(require (planet schematics/schemeunit:3))

; Olhando pro triangulo assim:
; 1
; 1 1
; 1 2 1
; 1 3 3 1
; 1 4 6 4 1
; Então dada uma linha l e uma coluna c, Pascal(l,c) =
; | 1 se c = 0 ou l = c
; | Pascal(l-1,c-1) + Pascal(l-1,c) se l > c
; | Sem valor, indefinido, se l < c
; Então:

(define (pascal l c)
  (cond ((or (= c 0) (= l c))
         1)
        ((> l c)
         (+ (pascal (- l 1) (- c 1))
            (pascal (- l 1) c)))))

(check-equal? (pascal 0 0) 1)
(check-equal? (pascal 1 0) 1)
(check-equal? (pascal 1 1) 1)
(check-equal? (pascal 2 1) 2)
(check-equal? (pascal 3 2) 3)
(check-equal? (pascal 4 2) 6)
(check-equal? (pascal 5 3) 10)
